# 4.简易商品管理系统 商品：名称、价格、数量
import json
import os.path

# 定义一个列表保存所有商品
goods_list = []


# 添加商品
def add(name, price, num):
    # 使用字典保存商品
    goods = {
        "name": name,
        "price": price,
        "num": num
    }
    # 添加到列表中
    goods_list.append(goods)
    print("添加成功")


# 查询所有商品
def show_all():
    # 判断如果.json文件存在，直接读取
    if os.path.exists("goods_list.json"):
        with open("goods_list.json", 'r', encoding='utf-8') as file:
            goods_list = json.load(file)

    print("商品编号\t商品名称\t商品价格\t商品数量")
    for idx, goods in enumerate(goods_list):
        print(f"{idx + 1}\t{goods['name']}\t{goods['price']}\t{goods['num']}")


# 根据商品编号修改价格和数量
def update(id, price, num):
    # 由于输入的id从1开始，获取元素时的索引从0开始，这里将id-1
    goods = goods_list[id - 1]
    # 修改字典中某个键值对的值
    goods['price'] = price
    goods['num'] = num
    print("修改成功")


# 根据商品编号删除
def delete(id):
    # 使用pop删除指定索引的元素
    goods = goods_list.pop(id - 1)
    print(f"{goods['name']}被删除")


def save():
    with open("goods_list.json", "w", encoding="utf-8") as file:
        json.dump(goods_list, file)
    print("写入成功")


def menu():
    print("1.查询所有")
    print("2.添加商品")
    print("3.修改商品")
    print("4.删除商品")
    print("5.保存商品到本地")
    print("0.退出")
    inp = int(input("请选择功能："))
    if inp == 1:
        show_all()
    elif inp == 2:
        name = input("请输入商品名称")
        price = input("请输入商品价格")
        num = input("请输入商品数量")
        add(name, price, num)
    elif inp == 3:
        id = int(input('请输入要修改的商品编号'))
        if 0 < id <= len(goods_list):
            price = int(input('请输入要修改的商品价格'))
            num = int(input('请输入要修改的商品数量'))
            update(id, price, num)
        else:
            print("指定编号的商品不存在")
    elif inp == 4:
        id = int(input('请输入要删除的商品编号'))
        if 0 < id <= len(goods_list):
            delete(id)
        else:
            print("指定编号的商品不存在")
    elif inp == 5:
        save()
    elif inp == 0:
        exit()
    menu()


# 某个py脚本文件的运行入口  main函数
if __name__ == "__main__":
    menu()
